package pl.wr.physics.units.quantum;

import pl.wr.math.Sign;
import pl.wr.physics.units.quantum.particleflavour.flavour.Bottomness;
import pl.wr.physics.units.quantum.particleflavour.flavour.Charm;
import pl.wr.physics.units.quantum.particleflavour.flavour.Isospin;
import pl.wr.physics.units.quantum.particleflavour.flavour.Strangeness;
import pl.wr.physics.units.quantum.particleflavour.flavour.Topness;

/**
 * Flavour or flavor is a quantum number of elementary particles. In quantum chromodynamics, flavour is a global
 * symmetry. In the electroweak theory, on the other hand, this symmetry is broken, and flavour changing processes
 * exist, such as quark decay or neutrino oscillations.
 * 
 * @version 1.0
 * @author wieslaw.rodak
 * 
 */
public enum Flavour {
	/**
	 * I3 = 1⁄2 for the up quark or down antiquark
	 */
	I3(new Isospin(Sign.plus, 1)),
	/**
	 * I3 = −1⁄2 for the down quark or up antiquark
	 */
	_I3(new Isospin(Sign.minus, 1)),
	/**
	 * B' = −1 for the bottom quark
	 */
	_B(new Bottomness(Sign.minus, 1)),
	/**
	 * B' = 1 for the bottom antiquark
	 */
	B(new Bottomness(Sign.plus, 1)),
	/**
	 * S = -1 for the strange quark
	 */
	_S(new Strangeness(Sign.minus, 1)),
	/**
	 * S = 1 for the strange antiquark
	 */
	S(new Strangeness(Sign.plus, 1)),
	/**
	 * C = 1 for the charm quark
	 */
	C(new Charm(Sign.plus, 1)),
	/**
	 * C = -1 for the charm antiquark
	 */
	_C(new Charm(Sign.minus, 1)),
	/**
	 * T = 1 for the top quark
	 */
	T(new Topness(Sign.plus, 1)),
	/**
	 * T = -1 for the top antiquark
	 */
	_T(new Topness(Sign.minus, 1));

	private IQuantum flavour;

	private Flavour(IQuantum flavour) {
		this.flavour = flavour;
	}

	public IQuantum getFlavour() {
		return flavour;
	}

}
